package com.wdb.modules.quartz.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wdb.modules.quartz.domain.QuartzJob;
import com.wdb.modules.quartz.domain.QuartzLog;
import com.wdb.modules.quartz.domain.vo.QuartzJobQueryCriteria;
import com.wdb.utils.PageResult;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Set;

/**
 * @author: wendaobai@qq.com
 * @date: 2024/8/21 星期三 10:23
 */
public interface QuartzJobService extends IService<QuartzJob> {

  /**
   * 查询所有定时任务
   *
   * <p>本函数的目的是根据提供的查询标准分页查询并返回匹配的定时任务列表 它使用了分页查询，以提高大数据量处理的效率
   *
   * @param criteria 查询条件，用于筛选定时任务
   * @param page 分页对象，用于设置分页参数并获取分页结果
   * @return 返回一个包含定时任务列表的分页结果对象
   */
  PageResult<QuartzJob> queryAll(QuartzJobQueryCriteria criteria, Page<Object> page);
  List<QuartzJob> queryAll(QuartzJobQueryCriteria criteria);

  QuartzJob findById(Long id);

  void execution(QuartzJob byId);

    void executionSubJob(String[] tasks);

  void updateIsPause(QuartzJob quartzJob);

  void create(QuartzJob quartzJob);

  void update(QuartzJob quartzJob);

  void delete(Set<Long> ids);

  PageResult<QuartzLog> queryAllLog(QuartzJobQueryCriteria criteria, Page<Object> page);

  void download(List<QuartzJob> quartzJobPageResult, HttpServletResponse response);
}
